﻿using Estsh.Core.Base;
using Estsh.Core.Services;
using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using System.Collections;
using Estsh.Core.Util;
using Estsh.Core.Model.ExcelModel;
using Estsh.Core.Model.Extend.Models;

namespace Estsh.Core.Wms.IServices
{
    public interface ICycleCountManageService : IBaseService<WmsCheckStock>
    {
        public Hashtable getCheckStockByPage(string orderNo,string orderType,string orderStatus, string startTime, string endTime, string enabled, int factoryId, Pager pager, String direction, String sort);
        public List<WmsCheckStockList_Extend> getCheckStockListByPage(string orderNo, string enabled, int factoryId, Pager pager, String direction, String sort);
        public List<WmsCheckStockList_Extend> getSearchCheckStockList(string orderNo, string partNo, string partSpec, string cartonNo);
        public List<WmsCheckStockPart> getCheckStockPartByPage(string orderNo, string enabled, int factoryId, Pager pager, String direction, String sort);
        public List<WmsCheckStockZone> getCheckStockZoneByPage(string orderNo, string enabled, int factoryId, Pager pager, String direction, String sort);
        public List<WmsCheckStockLocate> getCheckStockLocateByPage(string orderNo, string enabled, int factoryId, Pager pager, String direction, String sort);
        public List<WmsCheckStockRange> getCheckStockRangeByPage(string orderNo, string enabled, int factoryId, Pager pager, String direction, String sort);
        public List<WmsCheckStock> getCheckStockByOrderNo(string orderNo);
        public List<KeyValueResult> GetErpwarehouse(int factoryId);
        public List<MultiKeyValueResult> GetMultiErpwarehouse(int factoryId);
        public List<MultiKeyValueResult> GetMultiPartNo(int factoryId);
        public List<MultiKeyValueResult> GetMultiWarehouse(int factoryId);
        public List<MultiKeyValueResult> GetMultiZone(int factoryId);
        public List<MultiKeyValueResult> GetMultiLocate(int factoryId);
        public List<KeyValueResult> GetMoveOrderType(int factoryId);
        public List<KeyValueResult> GetCheckStockType(int factoryId);
        public List<KeyValueResult> GetCheckStockStatus(int factoryId);
        public List<KeyValueResult> getSelectFactory();
        public List<KeyValueResult> getSelectWarehouse(int factoryId);
        public List<SysWarehouse> getSelectWarehouse(string warehouseid);
        public List<SysZone> getSelectZone(string zoneid);
        public List<SysLocate> getSelectLocate(string locateid);
        public List<KeyValueResult> getSelectZone(int factoryId);
        public List<KeyValueResult> getSelectVendor(int factoryId);
        public List<SysVendor> getSelectVendor(string vendorid);
        public List<KeyValueResult> GetPart(int factoryId);
        public List<SysPart> getPartNoByZoneIds(string zoneIds);
        public List<SysPart> getPartNoByLocateIds(string locateIds);
        public List<SysPart> getPartNoByZoneIdsOrLocateIds(string zoneIds, string locateIds);
        public List<SysPart> getPartNoByZoneId(string zoneId);
        public List<SysPart> getPartNoByLocateId(string locateId);
        public Hashtable GetPartByPage(string partNo, string enabled, int factoryId, Pager pager, String direction, String sort);

        public Hashtable GetZoneByPage(string zoneName, string warehouse, string erpWarehouse, string enabled, int factoryId, Pager pager, String direction, String sort);

        public Hashtable GetLocateByPage(string locateName, string warehouse, string enabled, int factoryId, Pager pager, String direction, String sort);
        public List<SysPart> GetPartList(string partNo);
        public List<SysPart> GetPart(string partId);
        public Hashtable getCheckStock(String orderNo);
        public bool saveCycleCountManage(WmsCheckStock checkStockParams, List<WmsCheckStockPart> checkStockPartParams, List<WmsCheckStockZone> checkStockZoneParams, List<WmsCheckStockLocate> checkStockLocateParams, List<WmsCheckStockRange> checkStockRangeParams);
        public Hashtable onAdjustment(String orderNo, string userId);
        public Hashtable onNoAdjustment(String orderNo, string userId);
        public Hashtable onCloseCycle(String orderNo, string userId);
        public Hashtable onCompleteCycle(string orderno, string userId);
        public Hashtable onReplay(string orderNo, string empId);
        public Hashtable onBeginCycle(String orderNos, string userId);
        public int onClose(String ids, string userId);
        public int EnableData(String ids, string userId);
        public int DisableData(String ids, string userId);
        public List<CycleCountList> getCheckStockListByExportData(string orderNo);
    }
}
